The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Cache coherence refers to the uniformity of shared resource data that is stored in multiple caches. Maintaining cache coherence across plurality of multiprocessor computing devices can be challenging. A node is a multiprocessor computing device. Each processor in a node may have its own main memory and its own cache. Intranode cache coherence across the caches in a single node must be maintained to ensure the accuracy and uniformity of the cache contents within the node. Furthermore, in a cluster of nodes, internode cache coherence must be maintained across the caches of the different nodes to ensure the accuracy and uniformity of the cache contents across the nodes of the cluster.
Traditional approaches to such cache coherence in a cluster of nodes employ hardware-implemented coherence protocols on an intranode basis and software-implemented coherence protocols on an internode basis. The user of software-implemented coherence protocols for internode coherence in the cluster, however, introduces various inefficiencies. In a software implemented protocol, every data access message between two nodes requires execution of a multiple software processes. Such software processes may include, but are not limited to, sending a request to a requesting node's operating system, software calls to system drivers on the requesting node, software calls to I/O systems on the requesting node, software processing an interrupt to the requesting node's operation system, and execution of other software processes to communicate a single message to another node in the cluster. Likewise, on the responding node, similar software processes are necessary. Such software processes are thus inefficient, as there is significant overhead in processing software on both the requesting node and the responding node with every message sent between those nodes.
Furthermore, such a software-implemented coherence protocol for internode coherence provides poor scaling as the number of the nodes in the cluster grows. With every additional node added to the cluster, the number of software processes necessary for processing the internode messages grows significantly, thereby degrading system performance.
Additionally, a software-implemented coherence protocol for internode coherence is prone to system failure in a lossy network where packets may be lost between nodes. Specifically, if an internode message is lost via a lost packet, the entire system of nodes will crash in a software-based implementation.
Thus, what is needed is an improved system for maintaining internode and intranode cache coherence in a lossy network that does not rely on software-based implementation of the coherence protocols.
While each of the figures illustrates a particular embodiment for purposes of illustrating a clear example, other embodiments may omit, add to, reorder, and/or modify any of the elements shown in the figures.